#pragma once

/*--------------------------------------------------------------------------*/

class Gui;
class Variable;



#define CHUD_SIZE_OF_LETTERS_CACHE 256

class CHud final :
	public IRender,
	public ICalc,
	public IEngMod
{
public:
	CHud();
	~CHud();

	/*-IRender------------------------------------------------------------------*/
	virtual void OnRender(const RenderTask* renderTask, uint camarg) override;

	/*-ICalc--------------------------------------------------------------------*/
	virtual void OnCalc(uint arg) override;

	/*--------------------------------------------------------------------------*/

	GuiHud* GetGuiManager();
	ConsoleHud* GetConsoleManager();
	StatisticsHud* GetStatisticsManager();

private:
	Variable* var_forms_enabled;

	/*--------------------------------------------------------------------------*/

	GuiHud*				m_guiHud;
	ConsoleHud*			m_consoleHud;
	StatisticsHud*		m_statisticsHud;

	/*--------------------------------------------------------------------------*/

	bool				m_doScreenshot;
};

namespace sh
{
void guiadd(const std::string& name);
};

extern CHud* g_Hud;